package com.gilight.base.admin.product;

import com.gilight.base.base.exception.ServiceException;
import com.gilight.base.dto.goods.GroupShopDTO;
import com.gilight.base.model.Page;

/**
 * 管理团购商品服务
 */
public interface AdminGroupShopService {

    /**团购商品管理
     *
     * @param spuId
     * @param gmtStart   团购开始时间戳
     * @param gmtEnd     团购结束时间戳
     * @param minNum     团购最低人数
     * @param automaticRefund  团购人数未满是否自动退款
     * @param groupShopSkuListStr 团购sku链表
     * @param adminId 管理员Id
     * @return
     * @throws ServiceException
     */
    public String create(
            Long spuId,
            Long gmtStart,
            Long gmtEnd,
            Integer minNum,
            Integer automaticRefund,
            String groupShopSkuListStr,
            Long adminId) throws ServiceException;

    /**
     * 商品管理
     * @param id 团购商品的Id
     * @param adminId 管理员Id
     * @return
     * @throws ServiceException
     */
    public String delete(
            Long id,
            Long adminId) throws  ServiceException;

    /**
     *
     * @param id   团购商品spuID
     * @param spuId  spuId
     * @param gmtStart 团购开始时间戳
     * @param gmtEnd   团购结束时间戳
     * @param minNum   团购最低人数
     * @param automaticRefund  团购人数未满是否自动退款
     * @param groupShopSkuDOListStr  团购sku链表
     * @param adminId  管理员Id
     * @return
     * @throws ServiceException
     */
    public GroupShopDTO edit(
            Long id,
            Long spuId,
            Long gmtStart,
            Long gmtEnd,
            Integer minNum,
            Integer automaticRefund,
            String groupShopSkuDOListStr,
            Long adminId) throws ServiceException;

    /**
     * 团购商品管理  查询
     * @param id 团购商品的ID
     * @param spuName 团购商品的名称
     * @param status  团购商品的状态
     * @param page    团购商品页码
     * @param limit   团购商品长度
     * @param adminId 管理员Id
     * @return
     * @throws ServiceException
     */
    public Page<GroupShopDTO> list(
            Long id,
            String spuName,
            Integer status,
            Integer page,
            Integer limit,
            Long adminId) throws ServiceException;

}
